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

#ifndef MemoryReportTypes_h
#define MemoryReportTypes_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/IPDLStructMember.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct MemoryReport|
//
namespace mozilla {
namespace dom {
class MemoryReport final
{
private:
    typedef ::nsCString nsCString;
    typedef ::int32_t int32_t;
    typedef ::int64_t int64_t;
    typedef ::uint32_t uint32_t;

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

    MOZ_IMPLICIT MemoryReport(
            const nsCString& _process,
            const nsCString& _path,
            const int32_t& _kind,
            const int32_t& _units,
            const int64_t& _amount,
            const uint32_t& _generation,
            const nsCString& _desc) :
        process_(_process),
        path_(_path),
        desc_(_desc),
        amount_(_amount),
        kind_(_kind),
        units_(_units),
        generation_(_generation)
    {
    }

    MOZ_IMPLICIT MemoryReport(
            nsCString&& _process,
            nsCString&& _path,
            int32_t&& _kind,
            int32_t&& _units,
            int64_t&& _amount,
            uint32_t&& _generation,
            nsCString&& _desc) :
        process_(std::move(_process)),
        path_(std::move(_path)),
        desc_(std::move(_desc)),
        amount_(std::move(_amount)),
        kind_(std::move(_kind)),
        units_(std::move(_units)),
        generation_(std::move(_generation))
    {
    }

    nsCString&
    process()
    {
        return process_;
    }
    const nsCString&
    process() const
    {
        return process_;
    }

    nsCString&
    path()
    {
        return path_;
    }
    const nsCString&
    path() const
    {
        return path_;
    }

    int32_t&
    kind()
    {
        return kind_;
    }
    const int32_t&
    kind() const
    {
        return kind_;
    }

    int32_t&
    units()
    {
        return units_;
    }
    const int32_t&
    units() const
    {
        return units_;
    }

    int64_t&
    amount()
    {
        return amount_;
    }
    const int64_t&
    amount() const
    {
        return amount_;
    }

    uint32_t&
    generation()
    {
        return generation_;
    }
    const uint32_t&
    generation() const
    {
        return generation_;
    }

    nsCString&
    desc()
    {
        return desc_;
    }
    const nsCString&
    desc() const
    {
        return desc_;
    }

private:
    void
    StaticAssertions() const;
    ::mozilla::ipc::IPDLStructMember<nsCString> process_;
    ::mozilla::ipc::IPDLStructMember<nsCString> path_;
    ::mozilla::ipc::IPDLStructMember<nsCString> desc_;
    ::mozilla::ipc::IPDLStructMember<int64_t> amount_;
    ::mozilla::ipc::IPDLStructMember<int32_t> kind_;
    ::mozilla::ipc::IPDLStructMember<int32_t> units_;
    ::mozilla::ipc::IPDLStructMember<uint32_t> generation_;
};
} // namespace dom
} // namespace mozilla

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

#endif // ifndef MemoryReportTypes_h
