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

#ifndef DocAccessibleTypes_h
#define DocAccessibleTypes_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/a11y/IPCTypes.h"
#include "mozilla/ipc/IPDLStructMember.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct CacheData|
//
namespace mozilla {
namespace a11y {
class CacheData final
{
private:
    typedef ::uint64_t uint64_t;
    typedef ::mozilla::a11y::AccAttributes AccAttributes;

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

    MOZ_IMPLICIT CacheData(
            const uint64_t& _ID,
            AccAttributes* _Fields) :
        Fields_(_Fields),
        ID_(_ID)
    {
    }

    MOZ_IMPLICIT CacheData(
            uint64_t&& _ID,
            RefPtr<AccAttributes>&& _Fields) :
        Fields_(std::move(_Fields)),
        ID_(std::move(_ID))
    {
    }

    uint64_t&
    ID()
    {
        return ID_;
    }
    const uint64_t&
    ID() const
    {
        return ID_;
    }

    RefPtr<AccAttributes>&
    Fields()
    {
        return Fields_;
    }
    AccAttributes*
    Fields() const
    {
        return Fields_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<RefPtr<AccAttributes>> Fields_;
    ::mozilla::ipc::IPDLStructMember<uint64_t> ID_;
};
} // namespace a11y
} // namespace mozilla

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

#endif // ifndef DocAccessibleTypes_h
