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

#ifndef IPCQuotaObject_h
#define IPCQuotaObject_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "mozilla/RefPtr.h"
#include "nsString.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "mozilla/MozPromise.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/ByteBuf.h"
#include "mozilla/ipc/FileDescriptor.h"
#include "mozilla/ipc/IPCForwards.h"
#include "mozilla/ipc/Shmem.h"

// Headers for typedefs
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/IPDLStructMember.h"
#include "mozilla/ipc/SideVariant.h"

namespace mozilla {
namespace dom {
namespace quota {
class PRemoteQuotaObjectParent;
} // namespace quota
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
namespace quota {
class PRemoteQuotaObjectChild;
} // namespace quota
} // namespace dom
} // namespace mozilla


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct IPCQuotaObject|
//
namespace mozilla {
namespace dom {
namespace quota {
class IPCQuotaObject final
{
private:
    template<class FooSide> using Endpoint = ::mozilla::ipc::Endpoint<FooSide>;
    typedef ::mozilla::dom::quota::PRemoteQuotaObjectParent PRemoteQuotaObjectParent;
    typedef ::mozilla::dom::quota::PRemoteQuotaObjectChild PRemoteQuotaObjectChild;

public:
#ifdef __clang__
#  pragma clang diagnostic push
#  if __has_warning("-Wdefaulted-function-deleted")
#    pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
#  endif
#endif
    IPCQuotaObject() = default;
#ifdef __clang__
#  pragma clang diagnostic pop
#endif

    MOZ_IMPLICIT IPCQuotaObject(Endpoint<::mozilla::dom::quota::PRemoteQuotaObjectChild>&& _childEndpoint) :
        childEndpoint_(std::move(_childEndpoint))
    {
    }

    Endpoint<::mozilla::dom::quota::PRemoteQuotaObjectChild>&
    childEndpoint()
    {
        return childEndpoint_;
    }
    const Endpoint<::mozilla::dom::quota::PRemoteQuotaObjectChild>&
    childEndpoint() const
    {
        return childEndpoint_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<Endpoint<::mozilla::dom::quota::PRemoteQuotaObjectChild>> childEndpoint_;
};
} // namespace quota
} // namespace dom
} // namespace mozilla

namespace IPC {
template<>
struct ParamTraits <::mozilla::dom::quota::IPCQuotaObject>
{
    typedef ::mozilla::dom::quota::IPCQuotaObject paramType;
    static void
    Write(
            IPC::MessageWriter* aWriter,
            paramType&& aVar);
    static IPC::ReadResult<paramType>
    Read(IPC::MessageReader* aReader);
};
} // namespace IPC

#endif // ifndef IPCQuotaObject_h
