//
// Automatically generated by ipdlc.
// Edit at your own risk
//


#include "mozilla/ipc/PBackgroundParent.h"
#include "mozilla/ipc/PBackgroundChild.h"
#include "mozilla/dom/PBackgroundSDBRequestParent.h"
#include "mozilla/dom/PBackgroundSDBRequestChild.h"
#include "mozilla/dom/PBackgroundSDBConnection.h"
#include "mozilla/dom/PBackgroundSDBConnectionParent.h"
#include "mozilla/dom/PBackgroundSDBConnectionChild.h"

#include "ipc/IPCMessageUtils.h"
#include "ipc/IPCMessageUtilsSpecializations.h"
#include "nsIFile.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProtocolMessageUtils.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/ipc/ShmemMessageUtils.h"
#include "mozilla/ipc/TaintingIPCUtils.h"

namespace mozilla {
namespace dom {
namespace PBackgroundSDBConnection {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundSDBConnectionParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundSDBConnectionChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParentDestInfo, aChildDestInfo, aParent, aChild);
}
mozilla::UniquePtr<IPC::Message>
Msg_DeleteMe(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_DeleteMe__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_PBackgroundSDBRequestConstructor(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_PBackgroundSDBRequestConstructor__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply_PBackgroundSDBRequestConstructor(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply_PBackgroundSDBRequestConstructor__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_AllowToClose(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_AllowToClose__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Msg_Closed(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg_Closed__ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}

} // namespace PBackgroundSDBConnection
} // namespace dom
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestOpenParams|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestOpenParams>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).name());
    // Sentinel = 'name'
    (aWriter)->WriteSentinel(69075362);
}

auto ParamTraits<::mozilla::dom::SDBRequestOpenParams>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___name = IPC::ReadParam<::nsString>(aReader);
    if (!maybe___name) {
        aReader->FatalError("Error deserializing 'name' (nsString) member of 'SDBRequestOpenParams'");
        return {};

    }
    auto& _name = *maybe___name;
    // Sentinel = 'name'
    if ((!((aReader)->ReadSentinel(69075362)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'name' (nsString) member of 'SDBRequestOpenParams'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_name)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestSeekParams|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestSeekParams>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    (aWriter)->WriteBytes((&((aVar).offset())), 8);
    // Sentinel = 'offset'
    (aWriter)->WriteSentinel(147653256);
}

auto ParamTraits<::mozilla::dom::SDBRequestSeekParams>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{
            std::in_place,
            ::uint64_t{0}};
    if ((!((aReader)->ReadBytesInto((&((result__)->offset())), 8)))) {
        aReader->FatalError("Error bulk reading fields from uint64_t");
        return {};
    }
    // Sentinel = 'offset'
    if ((!((aReader)->ReadSentinel(147653256)))) {
        mozilla::ipc::SentinelReadError("Error bulk reading fields from uint64_t");
        return {};
    }
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestReadParams|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestReadParams>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    (aWriter)->WriteBytes((&((aVar).size())), 8);
    // Sentinel = 'size'
    (aWriter)->WriteSentinel(73662908);
}

auto ParamTraits<::mozilla::dom::SDBRequestReadParams>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{
            std::in_place,
            ::uint64_t{0}};
    if ((!((aReader)->ReadBytesInto((&((result__)->size())), 8)))) {
        aReader->FatalError("Error bulk reading fields from uint64_t");
        return {};
    }
    // Sentinel = 'size'
    if ((!((aReader)->ReadSentinel(73662908)))) {
        mozilla::ipc::SentinelReadError("Error bulk reading fields from uint64_t");
        return {};
    }
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestWriteParams|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestWriteParams>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).data());
    // Sentinel = 'data'
    (aWriter)->WriteSentinel(67109275);
}

auto ParamTraits<::mozilla::dom::SDBRequestWriteParams>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___data = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___data) {
        aReader->FatalError("Error deserializing 'data' (nsCString) member of 'SDBRequestWriteParams'");
        return {};

    }
    auto& _data = *maybe___data;
    // Sentinel = 'data'
    if ((!((aReader)->ReadSentinel(67109275)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'data' (nsCString) member of 'SDBRequestWriteParams'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_data)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestCloseParams|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestCloseParams>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
}

auto ParamTraits<::mozilla::dom::SDBRequestCloseParams>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{std::in_place};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union SDBRequestParams|
//
namespace mozilla {
namespace dom {
auto SDBRequestParams::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case TSDBRequestOpenParams:
        {
            (ptr_SDBRequestOpenParams())->~SDBRequestOpenParams__tdef();
            break;
        }
    case TSDBRequestSeekParams:
        {
            (ptr_SDBRequestSeekParams())->~SDBRequestSeekParams__tdef();
            break;
        }
    case TSDBRequestReadParams:
        {
            (ptr_SDBRequestReadParams())->~SDBRequestReadParams__tdef();
            break;
        }
    case TSDBRequestWriteParams:
        {
            (ptr_SDBRequestWriteParams())->~SDBRequestWriteParams__tdef();
            break;
        }
    case TSDBRequestCloseParams:
        {
            (ptr_SDBRequestCloseParams())->~SDBRequestCloseParams__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(const SDBRequestOpenParams& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams(aOther);
    mType = TSDBRequestOpenParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(SDBRequestOpenParams&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams(std::move(aOther));
    mType = TSDBRequestOpenParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(const SDBRequestSeekParams& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams(aOther);
    mType = TSDBRequestSeekParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(SDBRequestSeekParams&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams(std::move(aOther));
    mType = TSDBRequestSeekParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(const SDBRequestReadParams& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams(aOther);
    mType = TSDBRequestReadParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(SDBRequestReadParams&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams(std::move(aOther));
    mType = TSDBRequestReadParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(const SDBRequestWriteParams& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams(aOther);
    mType = TSDBRequestWriteParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(SDBRequestWriteParams&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams(std::move(aOther));
    mType = TSDBRequestWriteParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(const SDBRequestCloseParams& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams(aOther);
    mType = TSDBRequestCloseParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(SDBRequestCloseParams&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams(std::move(aOther));
    mType = TSDBRequestCloseParams;
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(const SDBRequestParams& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case TSDBRequestOpenParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams((aOther).get_SDBRequestOpenParams());
            break;
        }
    case TSDBRequestSeekParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams((aOther).get_SDBRequestSeekParams());
            break;
        }
    case TSDBRequestReadParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams((aOther).get_SDBRequestReadParams());
            break;
        }
    case TSDBRequestWriteParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams((aOther).get_SDBRequestWriteParams());
            break;
        }
    case TSDBRequestCloseParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams((aOther).get_SDBRequestCloseParams());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT SDBRequestParams::SDBRequestParams(SDBRequestParams&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case TSDBRequestOpenParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams(std::move((aOther).get_SDBRequestOpenParams()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestSeekParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams(std::move((aOther).get_SDBRequestSeekParams()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestReadParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams(std::move((aOther).get_SDBRequestReadParams()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestWriteParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams(std::move((aOther).get_SDBRequestWriteParams()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestCloseParams:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams(std::move((aOther).get_SDBRequestCloseParams()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

SDBRequestParams::~SDBRequestParams()
{
    MaybeDestroy();
}

auto SDBRequestParams::operator=(const SDBRequestOpenParams& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams(aRhs);
    mType = TSDBRequestOpenParams;
    return (*(this));
}

auto SDBRequestParams::operator=(SDBRequestOpenParams&& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams(std::move(aRhs));
    mType = TSDBRequestOpenParams;
    return (*(this));
}

auto SDBRequestParams::operator=(const SDBRequestSeekParams& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams(aRhs);
    mType = TSDBRequestSeekParams;
    return (*(this));
}

auto SDBRequestParams::operator=(SDBRequestSeekParams&& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams(std::move(aRhs));
    mType = TSDBRequestSeekParams;
    return (*(this));
}

auto SDBRequestParams::operator=(const SDBRequestReadParams& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams(aRhs);
    mType = TSDBRequestReadParams;
    return (*(this));
}

auto SDBRequestParams::operator=(SDBRequestReadParams&& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams(std::move(aRhs));
    mType = TSDBRequestReadParams;
    return (*(this));
}

auto SDBRequestParams::operator=(const SDBRequestWriteParams& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams(aRhs);
    mType = TSDBRequestWriteParams;
    return (*(this));
}

auto SDBRequestParams::operator=(SDBRequestWriteParams&& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams(std::move(aRhs));
    mType = TSDBRequestWriteParams;
    return (*(this));
}

auto SDBRequestParams::operator=(const SDBRequestCloseParams& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams(aRhs);
    mType = TSDBRequestCloseParams;
    return (*(this));
}

auto SDBRequestParams::operator=(SDBRequestCloseParams&& aRhs) -> SDBRequestParams&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams(std::move(aRhs));
    mType = TSDBRequestCloseParams;
    return (*(this));
}

auto SDBRequestParams::operator=(const SDBRequestParams& aRhs) -> SDBRequestParams&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TSDBRequestOpenParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams((aRhs).get_SDBRequestOpenParams());
            break;
        }
    case TSDBRequestSeekParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams((aRhs).get_SDBRequestSeekParams());
            break;
        }
    case TSDBRequestReadParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams((aRhs).get_SDBRequestReadParams());
            break;
        }
    case TSDBRequestWriteParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams((aRhs).get_SDBRequestWriteParams());
            break;
        }
    case TSDBRequestCloseParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams((aRhs).get_SDBRequestCloseParams());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto SDBRequestParams::operator=(SDBRequestParams&& aRhs) -> SDBRequestParams&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case TSDBRequestOpenParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenParams()) SDBRequestOpenParams(std::move((aRhs).get_SDBRequestOpenParams()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestSeekParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekParams()) SDBRequestSeekParams(std::move((aRhs).get_SDBRequestSeekParams()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestReadParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestReadParams()) SDBRequestReadParams(std::move((aRhs).get_SDBRequestReadParams()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestWriteParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteParams()) SDBRequestWriteParams(std::move((aRhs).get_SDBRequestWriteParams()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestCloseParams:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseParams()) SDBRequestCloseParams(std::move((aRhs).get_SDBRequestCloseParams()));
            (aRhs).MaybeDestroy();
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    (aRhs).mType = T__None;
    mType = t;
    return (*(this));
}

} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestParams>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::SDBRequestParams union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'SDBRequestParams'
    (aWriter)->WriteSentinel(830015015);

    switch (type) {
    case union__::TSDBRequestOpenParams:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestOpenParams());
            // Sentinel = 'TSDBRequestOpenParams'
            (aWriter)->WriteSentinel(1419380749);
            return;
        }
    case union__::TSDBRequestSeekParams:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestSeekParams());
            // Sentinel = 'TSDBRequestSeekParams'
            (aWriter)->WriteSentinel(1414137859);
            return;
        }
    case union__::TSDBRequestReadParams:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestReadParams());
            // Sentinel = 'TSDBRequestReadParams'
            (aWriter)->WriteSentinel(1408174071);
            return;
        }
    case union__::TSDBRequestWriteParams:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestWriteParams());
            // Sentinel = 'TSDBRequestWriteParams'
            (aWriter)->WriteSentinel(1573259398);
            return;
        }
    case union__::TSDBRequestCloseParams:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestCloseParams());
            // Sentinel = 'TSDBRequestCloseParams'
            (aWriter)->WriteSentinel(1557923953);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union SDBRequestParams");
            return;
        }
    }
}

auto ParamTraits<::mozilla::dom::SDBRequestParams>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    typedef ::mozilla::dom::SDBRequestParams union__;
    auto maybe__type = IPC::ReadParam<int>(aReader);
    if (!maybe__type) {
        aReader->FatalError("Error deserializing type of union SDBRequestParams");
        return {};

    }
    auto& type = *maybe__type;
    // Sentinel = 'SDBRequestParams'
    if ((!((aReader)->ReadSentinel(830015015)))) {
        mozilla::ipc::SentinelReadError("Error deserializing type of union SDBRequestParams");
        return {};
    }

    switch (type) {
    case union__::TSDBRequestOpenParams:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestOpenParams>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestOpenParams of union SDBRequestParams");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestOpenParams'
            if ((!((aReader)->ReadSentinel(1419380749)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestOpenParams of union SDBRequestParams");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestSeekParams:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestSeekParams>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestSeekParams of union SDBRequestParams");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestSeekParams'
            if ((!((aReader)->ReadSentinel(1414137859)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestSeekParams of union SDBRequestParams");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestReadParams:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestReadParams>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestReadParams of union SDBRequestParams");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestReadParams'
            if ((!((aReader)->ReadSentinel(1408174071)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestReadParams of union SDBRequestParams");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestWriteParams:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestWriteParams>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestWriteParams of union SDBRequestParams");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestWriteParams'
            if ((!((aReader)->ReadSentinel(1573259398)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestWriteParams of union SDBRequestParams");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestCloseParams:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestCloseParams>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestCloseParams of union SDBRequestParams");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestCloseParams'
            if ((!((aReader)->ReadSentinel(1557923953)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestCloseParams of union SDBRequestParams");
                return {};
            }
            return std::move(tmp);
        }
    default:
        {
            aReader->FatalError("unknown variant of union SDBRequestParams");
            return {};
        }
    }
}

} // namespace IPC
